![]() ビデオコーディングのための効率的な変換技術
专利摘要:
本開示は、ビデオコーディングにおいて使用されることができる効率的な変換技術を記述する。特に、ビデオデータの第1のブロックの変換に関係する計算の中間結果を、ビデオデータの第2のブロックの変換に関係する計算の中間結果を計算するときに再使用する。サーチ空間のビデオブロックが変換される動き推定プロセスの間に、効率的な変換技術を使用してもよいが、本開示は、必ずしもこの観点に制限されていない。パイプライン化技術を使用して、効率的な変換技術を加速させてもよく、転置メモリを実現して、効率的なパイプライン化を容易にしてもよい。 公开号:JP2011509538A 申请号:JP2010527212 申请日:2008-09-26 公开日:2011-03-24 发明作者:シュ、デ・デゾ;ナガラジ、ラグハベンドラ・シー.;モロイ、スティーブン 申请人:クゥアルコム・インコーポレイテッドQualcomm Incorporated; IPC主号:H04N7-30
专利说明:
[0001] 本発明は、デジタルビデオ処理に関連し、より詳細には、ビデオデータのブロックベースのコーディングに関連する。] 関連技術の説明 [0002] ビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレス通信デバイス、パーソナルデジタルアシスタント(PDA)、ラップトップコンピュータ、デスクトップコンピュータ、デジタルカメラ、デジタル記録デバイス、セルラまたは衛星無線電話機、ビデオゲーム協議、ハンドヘルドゲームデバイス、および類似物を含む、幅広いデバイスに組み込むことができる。デジタルビデオコーディングは、フルモーションマルチメディアシーケンスを、作成し、修正し、送信し、記憶し、記録し、および、再生する際に、従来のアナログシステムに比して、かなりの改善をもたらすことができる。ブロードキャストネットワークは、ビデオコーディングを使用して、1つ以上のチャネルのマルチメディア(オーディオ−ビデオ)シーケンスのワイヤレス加入者デバイスに対するブロードキャストを容易にしてもよい。ビデオコーディングをまた使用して、セルラ無線電話によるビデオ会議のような、ビデオテレフォニー(VT)アプリケーションをサポートしてもよい。] [0003] デジタルビデオシーケンスをコーディングするために、多数の異なるコーディング標準規格が確立されている。例えば、動画像符号化専門家会合(MPEG)は、MPEG−1、MPEG−2、およびMPEG4を含む多数の標準規格を開発してきた。他の標準規格は、国際電気通信連合(ITU)H.263標準規格、H.264標準規格、カリフォルニア州キューパーティーノのアップルコンピュータ社(登録商標)によって開発されたクイックタイム(登録商標)技術、ワシントン州レッドモンドのマイクロソフトコーポレーション(登録商標)により開発されたウィンドウズ(登録商標)用ビデオ、インテルコーポレーション(登録商標)によって開発されたindeo(登録商標)、ワシントン州シアトルのリアルネットワークス社(登録商標)からのリアルビデオ(登録商標)、スーパーマック社によって開発されたシネパック(登録商標)等を含む。さらに、新しい標準規格が、出現および進化し続けている。ITU H.264はまた、MPEG−4、パート10、アドバンストビデオコーディング(AVC)においても記述されている。] [0004] ほとんどのビデオコーディング技術は、ブロックベースのコーディングを利用しており、これは、ビデオフレームをピクセルのブロックへと分割し、ピクセルブロックを、ビデオシーケンス中の、他のフレームのピクセルブロックに相関させる。現在のブロックと、別のフレームの予測ブロックとの間の差分をエンコーディングすることによって、データ圧縮が達成できる。用語“マクロブロック”を使用して、(典型的に、ビデオシーケンスの前のまたは後続のフレームのサブセットである)サーチ空間に対して比較されたビデオフレームのディスクリートブロックを規定することが多い。マクロブロックはまた、パーティション、または、サブパーティションへとさらにサブ分割されてもよい。ITUH.264標準規格は、16×16マクロブロック、16×8パーティション、8×16パーティション、8×8パーティション、8×4サブパーティション、4×8サブパーティション、4×4サブパーティションをサポートする。他の標準規格は、異なるサイズのブロック、マクロブロック、パーティション、および/または、サブパーティションをサポートしてもよい。] [0005] ビデオフレーム中のそれぞれのブロック(マクロブロック、パーティション、または、サブパーティション)に対して、エンコーダは、1つ以上の直前のビデオフレーム(および/または、後続のフレーム)の類似サイズのブロックを比較して、“予測ブロック”または“ベストマッチ”として呼ばれる、類似のブロックを識別する。現在のビデオブロックを、他のフレームのビデオブロックに比較するプロセスは、一般的に、動き推定として呼ばれる。いったん、コードされることになる所定のブロックに対する“ベストマッチ”が識別されると、エンコーダは、現在のブロックと、ベストマッチとの間の差分をエンコードできる。現在のブロックと、ベストマッチとの間の差分をエンコーディングするこのプロセスは、動き補償として呼ばれるプロセスを含む。動き補償は、(残余として呼ばれる)差分ブロックを作成することを含み、これは、エンコードされることになる現在のブロックと、ベストマッチとの間の差分を示す情報を含む。特に、動き補償は、通常は、動きベクトルを使用して、ベストマッチをフェッチして、次に、入力ブロックからベストマッチを抽出して、残余を発生させる動作を指す。エントロピーコーディングのような追加のコーディングステップを、残余上で実行して、ビットストリームをさらに圧縮してもよい。] 概要 [0006] 本開示は、ビデオコーディングにおいて使用されることができる効率的な変換技術を記述する。特に、ビデオデータの第1のブロックの変換に関係する計算の中間結果を、ビデオデータの第2のブロックの変換に関係する計算の中間結果を計算するときに再使用する。サーチ空間のビデオブロックが変換される動き推定プロセスの間に、効率的な変換技術を使用してもよいが、本開示は、必ずしもこの観点に制限されていない。本開示にしたがうと、サーチ空間は、異なる4×4ピクセルブロックへと分けられてもよく、この異なる4×4ピクセルブロックは、互いにオーバーラップしていてもよい。] [0007] 4×4ピクセルブロックの行に1次元変換を実行して、中間結果を発生させてもよく、次に、中間結果の列に1次元変換を実行してもよい。代わりに、最初に、列に1次元変換を実行して、次に、中間結果の行に1次元変換を実行してもよい。何れのケースにおいても、サーチ空間内の異なる4×4ピクセルブロックの間にオーバーラップがあるとすると、同一の計算を実行することなく、中間結果の少なくともいくつかのものを再使用(例えば、後の変換とともに共有)することができる。ここで記述する技術の実現のための効率的なアーキテクチャもまた開示する。] [0008] 1つの例において、本開示は、ビデオデータのブロック上で変換を実行することを含む方法を提供し、変換を実行することは、ビデオデータの第1のブロックの第1の変換に関係する1つ以上の計算を、ビデオデータの第2のブロックの第2の変換において再使用することを含む。] [0009] 別の例において、本開示は、ビデオデータのブロック上で変換を実行するビデオコーダを具備するデバイスを提供する。変換を実行する際に、ビデオコーダは、ビデオデータの第1のブロックの第1の変換に関係する1つ以上の計算を、ビデオデータの第2のブロックの第2の変換において再使用する。] [0010] 別の例において、本開示は、ビデオデータのブロック上で変換を実行する手段と、ビデオデータの第1のブロックの第1の変換に関係する1つ以上の計算を、ビデオデータの第2のブロックの第2の変換において再使用する手段とを具備するデバイスを提供する。] [0011] ここで記述する技術は、ハードウェア、ソフトウェア、ファームウェア、または、これらの任意の組み合わせで実現されてもよい。ソフトウェアで実現される場合、ソフトウェアは、デジタル信号プロセッサ(DSP)、または、他のタイプのプロセッサもしくはデバイスにおいて実行されてもよい。技術を実行するソフトウェアは、コンピュータ読取可能媒体中に最初に記憶されていてもよく、プロセッサ、もしくは他のデバイス中にロードされ、実行されて、ここで記述する技術を使用したビデオコーディングを可能にしてもよい。] [0012] したがって、本開示はまた、命令を備えるコンピュータ読取可能媒体も企図しており、命令は、ビデオコーディングデバイス中で実行されるときに、デバイスに、ビデオデータのブロック上で変換を実行させ、変換を実行させる際に、命令は、デバイスに、ビデオデータの第1のブロックの第1の変換に関係する1つ以上の計算を、ビデオデータの第2のブロックの第2の変換において再使用させる。] [0013] さらに、本開示は、ビデオデータのブロック上で変換を実行するように構成されている回路も企図しており、変換を実行する際に、回路は、ビデオデータの第1のブロックの第1の変換に関係する1つ以上の計算を、ビデオデータの第2のブロックの第2の変換において再使用する。] [0014] 追加的に、以下でより詳細に記述するように、パイプライン化技術を使用して、効率的な変換技術を加速させてもよく、転置メモリを実現して、効率的なパイプライン化を容易にしてもよい。さまざまな実施形態のさらなる詳細を、添付の図面と、以下の説明において述べる。他の特徴、目的、および利点が、詳細な説明と図面から、また、特許請求の範囲から明らかになるだろう。] 図面の簡単な説明 [0015] 図1は、本開示の技術を実現するビデオコーディングデバイスの例示的なビデオコーダを図示するブロック図である。 図2は、変換を含む、動き推定処理の一部を実現するコンポーネントを図示するブロック図である。 図3は、変換を含む、動き推定処理の一部を実現するコンポーネントを図示するブロック図である。 図4は、1次元変換を実行するためのバタフライ実現を図示する図である。 図5は、ここで記述するような変換に対して、計算共有技術を使用するアーキテクチャを図示するブロック図である。 図6は、本開示にしたがって、達成される計算的な節約を図示するグラフである。 図7は、並列でサーチされるサーチポイントの数の関数としての変換エンジンの数を図示するグラフである。 図8は、例示的な垂直型エンジンを図示するブロック図である。 図9は、サーチ空間の最初の4×4ピクセルブロックを変換するのに使用されてもよい例示的な水平型エンジンを図示するブロック図である。 図10は、図8に示した水平型エンジンによって実行された変換に続いて、サーチ空間の残りの4×4ピクセルブロックを変換するのに使用されてもよい例示的な水平型エンジンを図示するブロック図である。 図11は、垂直型エンジンへの入力ブロックを図示するサーチ空間内のブロックの概念図である。 図12は、水平型エンジンと、垂直型エンジンとの間のデータフローを図示する図である。 図13は、水平型エンジンと、垂直型エンジンとの間に存在する転置レジスタ中のタイミングとデータフローを図示するブロック図である。] 図1 図10 図11 図12 図13 図2 図3 図4 図5 図6 発明の実施形態の詳細な説明 [0016] 本開示は、ビデオコーディングにおいて有用である効率的な変換技術を記述する。以下でより詳細に説明することになるように、ビデオデータの第1のブロックの変換に関係する計算の中間結果を、ビデオデータの第2のブロックの変換において再使用する。サーチ空間のビデオブロックが変換される動き推定プロセスの間に実行される、整数変換、または、フォワード離散コサイン変換に対して、この技術は特に有用である。しかしながら、ビデオコーディングに関係する、他の変換の文脈においてこの技術を使用してもよい。実際、任意のタイプの線形変換、整数変換、および、潜在的に、他の変換の文脈において、この技術は有用であってもよい。] [0017] 本開示にしたがうと、(任意のサイズの)サーチ空間は、4×4ピクセルブロックのような、異なるビデオブロックへと分けられてもよい。サーチ空間内で規定される4×4ピクセルブロックは、互いにオーバーラップしていてもよい。例として、5×5ピクセルサーチ空間は、4つの異なる4×4ピクセルブロックを規定してもよいが、分数分解能に対する内挿を使用して、5×5ピクセルサーチ空間内で、さらに多くの4×4ピクセルブロックを規定することができる。4×4ピクセルブロックを、ピクセルドメインから、空間周波数ドメインへと変換するときに、サーチ空間を使用してもよい。1つのドメインから別のものに対する、この変換の間に、典型的に2つの1次元変換パスが、4×4ピクセルブロック上で実行される。列上で第1のパスを実行して、(中間結果として呼ばれる)水平空間周波数コンポーネントを発生させ、1行以上の行上で第2のパスを実行して、垂直空間周波数コンポーネントを発生させる。当業者は、行上で第1のパスを実行してもよく、列上で第2のパスを実行してもよいことを、全く困難なく理解することになるだろう。] [0018] 4×4ピクセルブロックの列に1次元変換を実行して中間結果を発生させ、次に、中間結果の行に1次元変換を実行してもよい。サーチ空間中の異なる4×4ピクセルブロックの間にオーバーラップがあるとすると、同一の計算を実行することなく、中間結果の少なくともいくつかのものを再使用することができる。このような方法で、計算を避けて効率性を高めることができる。ここで記述する技術の効率的な実現を達成することができる、例示的なハードウェアアーキテクチャも開示する。このケースでは、パイプライン技術を使用して、ビデオデータの1組のブロックの効率的な変換技術を加速させてもよく、転置メモリを実現して、効率的なパイプライン化を容易にしてもよい。] [0019] 図1は、本開示の技術を実現してもよいビデオコーディングデバイスの例示的なビデオコーダ10を図示するブロック図である。実際、幅広いさまざまなデバイスが、本開示の教示から利することができるビデオコーダを実現してもよい。例として、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレス通信デバイス(例えば、ハンドセット)、パーソナルデジタルアシスタント(PDA)、ラップトップコンピュータ、デスクトップコンピュータ、デジタルカメラ、デジタルレコーディングデバイス、セルラもしくは衛星無線電話機、ビデオゲーム協議、ハンドヘルドゲームデバイス、および類似物において、ビデオコーダ10を使用してもよい。ブロードキャストネットワークは、ビデオコーディングを使用して、1つ以上のチャネルのマルチメディア(オーディオ−ビデオ)シーケンスのワイヤレス加入者デバイスに対するブロードキャストを容易にしてもよい。また、ビデオコーディングを使用して、セルラ無線電話機によるビデオ会議、とともに、他のさまざまなアプリケーションのような、ビデオテレフォニー(VT)アプリケーションをサポートしてもよい。] 図1 [0020] 図1に示したように、ビデオコーダ10は、入力マクロブロック(MB)を受け取る。用語“マクロブロック”を使用して、サーチ空間に対して比較されて、コード化されるビデオフレームの離散ブロックを規定することが多い。マクロブロックはまた、パーティション、または、サブパーティションへとさらにサブ分割されてもよい。ITUH.264標準規格は、16×16マクロブロック、16×8パーティション、8×16パーティション、8×8パーティション、8×4サブパーティション、4×8サブパーティション、4×4サブパーティションをサポートする。他の標準規格は、異なるサイズのブロック、マクロブロック、パーティション、および/または、サブパーティションをサポートしてもよい。いずれのケースにおいても、用語“マクロブロック”を使用して、本開示の観点を記述してもよく、ここで記述する技術は、マクロブロック、パーティション、サブパーティション、または、他のビデオブロックサイズを含む、ビデオデータの任意のサイズのブロックをコーディングする際に有用である。] 図1 [0021] 図1に示したように、それぞれの入力MBに対して、(図1において“予測”としてラベル付けされている)予測ブロックを発生させる。予測ブロックを、ベストマッチとして呼ぶこともある。ユニット12によって、入力MBから予測ブロックを減じて、(図1において“RES”としてラベル付けされている)残余を発生させる。残余は、入力MBと、入力MBをコードするのに使用される予測ブロックとの間の差分を示すデータのブロックを含む。動きベクトル(または、イントラコーディングに対しては、イントラベクトル)によって、予測ブロックを識別してもよい。イントラコーディングに対して、予測ブロックは、入力MBと同じフレーム内に位置している。インターコーディングに対して、予測ブロックは、入力MBと異なるフレーム内に位置している。動きベクトル(または、イントラコーディングに対しては、イントラベクトル)は、コーディングにおいて使用される予測ブロックを識別する。インターコーディングは、予測的(P)なものであることができ、このことは、予測ブロックが、ビデオシーケンスの前のフレームに基づいていることを意味し、あるいは、インターコーディングは、2方向(B)であることができ、このことは、予測ブロックが、ビデオシーケンスの前のフレーム、または、後続するフレームに基づいていることを意味する。] 図1 [0022] 残余(Res)を作成する際に、残余に変換と量子化が実行される。変換ユニット14と、量子化ユニット16が、それぞれ、変換と量子化を実行する。また、エントロピーコーディングを実行して、出力ビットストリームを発生させてもよい。エントロピーコーディングユニット18は、エントロピーコーディングを実行し、このことは、さらなる圧縮を達成してもよい。エントロピーコーディングは、1組のビットに対してコードを割り当てることと、コード長を、確率にマッチングさせることとを含んでもよい。さまざまなエントロピーコーディングはビデオシステムコーディングにおいてよく知られており、共通している。] [0023] ビデオコーダ10の予測ループにおいて、逆量子化ユニット22と、逆変換ユニット24とが、残余に逆量子化と逆変換とを実行して、ユニット12と14によって実行された変換と量子化を本質的に反転させる。加算器ユニット26によって、予測ブロックが、再構成された残余に追加し戻される。これは、予測ループにおいて、入力MBを本質的に再作成する。再構成されたMBのエッジは、デブロッキングユニット28によってフィルタされ、メモリ30に記憶されてもよい。] [0024] 量子化は、原則として、変換された信号のダイナミックレンジを減少させることを含む。ダイナミックレンジを減少させることは、エントロピーコーディングによって発生されるビット(レート)数に影響を及ぼす。このことはまた、残余中の損失をもたらし、これは、オリジナルのMBと、再構成されたMBが、わずかに異なることをもたらしかねない。これらの差分は、通常は、量子化エラーまたは歪みとして呼ばれる。量子化の強度は、量子化パラメータによって決定される。より大きい量子化パラメータは、より高い歪みをもたらすが、コーディングレートを下げることができる。] [0025] 予測ループは、イントラ予測ループ、または、インター予測ループであってもよい。MPEG−4、およびITUH.263は、典型的に、インター予測だけをサポートする。ITU H.264は、イントラ、およびインター予測の両方をサポートする。図1のビデオコーダ10において、制御信号32は、ループが、イントラ予測、または、インター予測であるかどうかを選択してもよい。しかしながら、本開示の技術は、イントラコーディング、または、インターコーディングだけをサポートするシステムにおいても作用することができる。] 図1 [0026] イントラ予測において、ユニット34は、空間的推定と、空間的補償を実行する。このケースでは、ユニット34は、再構成されたMBを、同じビデオフレーム内の隣接マクロブロックに対して比較して、イントラ予測値(predictor)ブロックを発生させる。イントラ予測値ブロックは、本質的に、再構成されたMBに対するベストマッチであり、これは、残余中の良好な圧縮をもたらすだろう。イントラ予測は、空間的冗長性を減少させるのを支援することができる。] [0027] インター予測において、ユニット36は、動き推定と動き補償を実行する。動き推定は、再構成されたMBを、前の、または、将来のフレームのブロックに対して比較して、インター予測値を発生させる。インター予測値は、再構成されたMBに対するベストマッチであるが、イントラ予測値とは異なって、インター予測値は、異なるビデオフレームからもたらされたものである。インター予測は、時間的冗長性を減少させるのを支援することができる。典型的に、時間的冗長性の活用は、空間的冗長性の活用よりも、ビデオシーケンスの圧縮において、より大きいインパクトを持つことができる。換言すれば、MBのインターコーディングは、通常、イントラコーディングより良好な圧縮を達成する。] [0028] 本開示の技術は、一般的に、フォワード離散コサイン変換のような変換に関係する。モーション推定プロセスの間に技術を実現してもよいが、本開示はこの観点に制限されているわけではない。説明の目的で、本開示は、動き推定の間に実行されるとして技術を説明することになるが、これらの技術、または、類似の技術を、変換が実行される、他の文脈において使用してもよい。] [0029] 動き推定は、ビデオコーダによって実行されることができる計算集約的なプロセスである。多数の計算は、動き推定において考慮される可能性のある多数の潜在的な予測値によるものであるかもしれない。実際に、動き推定は、通常は、1つ以上の前のフレーム(または、後続するフレーム)のサブセットを含むサーチ空間中で、インター予測値をサーチすることを含む。サーチ空間からの候補は、コスト関数またはメトリックのベースで調べられてもよく、これは、通常は、絶対差分の合計(SAD)、2乗差分の合計(SSD)、絶対変換差分の合計(SATD)、または、2乗変換差分の合計(SSTD)のような異なる計算を実行することによって規定される。いったん、サーチ空間中のすべての候補に対してメトリックが計算されると、メトリックを最小化させる候補が、インター予測値として選ばれることができる。したがって、動き推定に影響を及ぼす主要な要因は、サーチ空間のサイズ、サーチ方法、および、さまざまなコスト関数であってもよい。コスト関数は、本質的に、現在のフレームのオリジナルブロックと、サーチエリアの候補ブロックとの間の冗長性を定量化する。冗長性は、正確なレートと歪みに関して定量化されてもよい。] [0030] 図2は、変換ベースのメトリックフレームワークを示す。図2に示したブロックは、(図1に示したユニット36のような)動き推定器によって実行される機能を含んでもよい。図2において、例示的なビット長を図示したが、本開示の技術は、何らかの特定のビット長に制限されていない。再び、動き推定は、エンコードされることになるブロックを、サーチ空間内の複数の候補に対して比較して、エンコードされることになるブロックにベストマッチする、サーチ空間内の1つのブロックを見つけることを含む。本開示にしたがうと、ベストマッチは、レートと、歪みという点で規定されてもよい。] 図1 図2 [0031] 動き推定を達成するために、エンコードされることになるブロックと、所定のサーチ空間ブロックとの間で、残余エネルギーが分析される。各サーチ空間ブロックのピクセルから、エンコードされることになるブロックの対応するピクセルを減ずるプロセスを通して、それぞれの残余候補が取得される。これは、図2の差分(Diff)モジュール42が、例えば、SAD、SSD、SATD、または、SSTD技術によって、達成していることである。残余ブロックは、次に、フォワード変換エンジン(FTE)44を使用して、周波数ドメインへと変換され、FTE44は、フォワード離散コサイン変換を実行してもよい。変換された残余ブロックは、そのレートおよび歪みプロパティに対して分析されることができる。特に、レート歪み推定(RDE)モジュール46が、本質的に、所定の量子化パラメータQPにおいて、この所定のサーチ空間ブロックに対する結果となる、レート(R)および歪み(D)を推定する。RDEモジュール46は、次に、ラグランジュ原則に基づいて、RとDを単一のコストメトリック(=D+λR)へと結合させ、これは、メトリックが少なくとも部分的にRとDに依拠する範囲において、レート歪みメトリックとして呼ばれてもよい。すべての候補サーチ空間ブロックに対するコストが比較されてもよく、いずれかのものが、コーディングに対する最小コストが選ばれることをもたらす。] 図2 [0032] 上で計算されたコストメトリックは、4×4ピクセルのサイズであるサーチ空間ブロックと、コード化されているブロックとに対応することに留意すべきである。4×4ピクセルより大きいブロックサイズに対しては、複数の4×4ピクセルブロックを使用して、より大きいブロックを覆ってもよい。このケースでは、より大きいブロックを覆う、すべての4×4ユニットブロックに対して、コストメトリックを累積することによって、より大きいブロックに対するコストを計算してもよい。以下の記述は、4×4ピクセルのブロックサイズに焦点を当てるが、技術は、他のサイズのブロックを適用できる。] [0033] フォワード変換エンジン(FTE)44は、一般的に、任意の変換ベースのメトリック計算の基本的モジュールである。変換の線形的性質によって、差分モジュール42とFTE44との段階を交換することができる。本開示にしたがうと、差分モジュール42と、FTE44との順序を交換することは、変換の間の計算上の節約を可能にすることができる。示したブロックの入力および出力の表記は、入力の(列)×(行)×(値を表すのに使用されるビット数)である。] [0034] 図3は、図2に対する代替を示し、ここで、差分モジュール42とFTE44の順序は交換されている。図3のコンポーネントは、動き推定ユニットの一部を形成する。例示的な目的で、ビット長を図示したが、他のビット長も使用できる。図3において、2つの異なるFTE52Aと52Bが、例えば、整数変換またはフォワード離散コサイン変換によって、エンコードされることになるブロック(“エンコードブロック”)と、考慮されているサーチ空間ブロックとを変換する。このケースでは、差分計算は、変換後に差分ユニット54によって実行される。RDEモジュール56は、次に、所定の量子化パラメータQPにおいて、この所定のサーチ空間ブロックに対する結果となるレート(R)と、歪み(D)とを推定する。RDEモジュール56は、次に、ラグランジュ原則に基づいて、RとDを単一のコスト(=D+λR)へと結合させる。次に、動き推定ユニット(例えば、図1のユニット36)において、すべての候補サーチ空間ブロックに対するコストが比較されてもよく、いずれかの候補が、コーディングに対する最小コストが選ばれることをもたらす。] 図1 図2 図3 [0035] 動き推定の基本的問題は、サーチ空間(s)から、エンコードされることになるブロック(エンコードブロック、e)に対する“ベストマッチ”を見つけることである。エンコードブロック(e)とサーチ空間(s)は、以下のように規定されてもよい。] [0036] 理解されることができるように、eは、sにおける4つのサーチポイントに対してマッチされてもよく、これは、以下のように示されることができる。] [0037] (サーチ)ポイント、例えば、s(0,0)、s(0,1)、s(1,0)、または、s(1,1)は、等しい水平および垂直の次元のブロックとして示したことに留意せよ。s(0,0)は、ブロック00として呼ばれてもよく、s(0,1)は、ブロック01として呼ばれてもよく、s(1,0)は、ブロック10として呼ばれてもよく、そして、s(1,1)は、ブロック11として呼ばれてもよい。サーチポイントはまた、等しくない水平および垂直の次元のブロックも示してもよい。図11は、いくつかの規定されたサーチポイントを備える8×8サーチエリアを示し、この例に一貫した図解的な目的でブロックを示した。sにおいて、eに対するベストマッチを見つけるために、残余ブロックr(x,y)は、以下のように計算される。] 図11 [0038] 次に、残余ブロックr(x,y)は、変換行列] [0039] によって、空間的周波数ドメインへと変換される。] [0040] 等式8において、変数vは、垂直列を表し、等式9において、変数hは、水平行を表す。変換行列は、整数を包含しており、いくつかの文脈において、これは整数変換として知られており、別の文脈において、これは離散コサイン変換として呼ばれる。離散コサイン変換(DCT)は、整数変換、または、“実数”変換のいずれかであってもよい。当業者は、整数または実数によって、変換行列が形成されてもよいことを理解するだろう。4ポイント1次元(1−D)変換を用いて、ビデオブロックの空間的周波数ドメインコンポーネントを発生させてもよいことに留意すべきである。4ポイント1−D変換は、最初に、すべての列に適用されて、第1パス中間結果を発生させてもよく、次に、4ポイント1D変換は、第2のパスにおいて、すべての行の中間結果に適用されてもよい。1−D変換の“バタフライ実現”を図4に示し、これは、1組の加算器を使用して、入力を異なる方法で結合させて、異なる出力を発生させる。ブリュットフォース(brute force)方法は、R(0,0)、R(0,1)、R(1,0)、または、R(1,1)の計算に対して、8つの個別の1−D変換を使用するだろう。ブリュットフォース方法において、それぞれのサーチポイントは、独立して取り扱われ、中間結果R’(0,0)、R’(0,1)、R’(1,0)、または、R’(1,1)の再使用はない。高精細度テレビジョン(HDTV)に対して、全体のフレームをサーチするのに、1つだけの垂直型、および、1つだけの水平型エンジンが使用される場合、ビデオフレームのリアルタイム提示を容易にするのに、スループットはあまりにも遅すぎる。したがって、以下により詳細に説明するように、HDTVまたは他の適応において、サーチをスピードアップさせるために、複数の垂直型および水平型エンジンを並列に使用することができる。] 図4 [0041] 図4に示したように、1つの1−Dの4入力変換は、いくつかのステージを持っているとして見られてもよい。変数x0、x1、x2、および、x3は、変換に対する入力を表し、y0、y1、y2、および、y3は、変換の4つの変換された出力を表す。値“a”と“c”は、乗法の定数である。したがって、上に“c”を有する矢印は、その矢印の出力が、“c”の値での、入力値(矢印の左側)の乗算の結果であることを意味する。値“p”は、ワード長、すなわち、さまざまなステージに入力されるビット数を表す。] 図4 [0042] 図3に示されるような、修正されたフレームワークが使用される場合、変換の中間結果が再使用されてもよい。特に、等式(7)、(8)、および(9)とは対照的に、2次元変換されたR(x,y)は、以下のように取得されることができる。] 図3 [0043] したがって、変換は、r(x,y)の変換から、s(x,y)の変換へと変更されることができる。このことは、s(0,0)(等式3)と、s(0,1)(等式4)との列オーバーラップをなくすことを可能にし、s(1,0)(等式5)と、s(1,1)(等式6)との列オーバーラップをなくすことを可能にする。S’(0,0)の第1パス中間結果(すなわち、列に関係する結果)を再使用して、S’(0,1)の第1パス中間結果(すなわち、列に関係する結果)の重複計算を避けてもよい。同様に、S’(1,0)の第1のパス中間結果(すなわち、列に関係する結果)を再使用して、S’(1,1)の第1パス中間結果(すなわち、列に関係する結果)の重複計算を避けてもよい。中間結果の(共有とも呼ばれる)この再使用を、以下により詳細に説明する。] [0044] 再使用(例えば、共有)の概念を図解するために、例として、2次元変換されたs(0,0)が、以下のように計算されてもよいことを考慮せよ。] [0045] さらに、S(0,1)は、以下のように計算されてもよい。] [0046] 等式(3)、(4)から以下のことに留意すべきである。] [0047] したがって、以下の等式のようになる。] [0048] これは、n∈1,2,3に対して、S’(0,0)に関係する第1パス中間結果を再使用して、S’(0,1)に関係する第1パス中間結果を計算してもよい。再使用は、そうでなければ、S’(0,1)の計算に必要とされてもよい、8つの1−D変換列変換のうちの3つをなくしてもよいことに留意すべきである。したがって、1−D変換の最大37.5%までの節約が、第1パスの間に達成されてもよい。s(0,0)の行を、s(1,0)の行とオーバーラップさせることによって、ビデオブロックもまた処理されてもよいことに注目すべきであり、このケースにおいて、第1パスからもたらされる列への1−D列変換の第2パスの前に、1−D行変換が、第1パスの行に適用されるだろう。言い換えると、水平型変換および垂直型変換の順序に関わらず、本開示の技術を適用することができる。] [0049] 一般的に、N×Mサーチ空間における4×4ブロックのベストマッチをサーチするために、合計(N−3)×(M−3)サーチポイントがある。ここでNは、水平方向での合計ピクセルカウントを表し、Mは、垂直方向での合計ピクセルカウントを表す。リアルタイムビデオコーディングのための時間内に、ベストマッチをサーチするタスクを確実に終了させることができるように、複数の1Dエンジンを設計することができ、これらを同時に実行できる。“j+1”(0≦j≦N−3)ユニットの水平型エンジンを並列に使用して、サーチを加速させて、垂直型変換されたデータが並列で使用されることを仮定すると、“k+1”ユニットの垂直型エンジンだけが必要とされる。ここで、k=(j+3)/4の整数である。ビデオコーディングアーキテクチャを設計する際に、電力消費と、シリコンエリアとは、変換エンジンの性能に対する重要なトレードオフ要因である。] [0050] 図5は、ここで記述するような変換とともにパイプライン化技術に対して、計算再使用技術を使用してもよいアーキテクチャを図示するブロック図である。図5に示したアーキテクチャ例を使用して、FTE52Bを実現してもよい。ここで、4つの水平型エンジンが使用され(j=3)、したがって、この設計アーキテクチャ中で効率的なデータ共有を持つために、2つの垂直型エンジンが使用されてもよい(k=2)。図5に示したように、FTE60は、ランダムアクセスメモリ(RAM)62、2つの垂直型エンジン(VE(0)64A、および、VE(1)64B)、2つの転置メモリTM65A、およびTM65B、ならびに、4つの水平型エンジン(HE(0)66A、HE(1)66B、HE(2)66C、および、HE(3)66D)を含む。] 図5 [0051] FTE60は、垂直および水平方向の両方で、4×4フォワード変換を実現してもよい。一般的に、垂直変換、または、水平変換のいずれが最初に実行されるかどうかは、問題にならない。言い換えると、変換のシーケンス(垂直および水平)は、他の実現において交換することができる。したがって、他の実現において、水平変換は、垂直変換の前に実行されてもよい。図5において、垂直変換は、水平変換によって後続される第1の変換動作である。] 図5 [0052] 図5に示したように、アーキテクチャは、4つの水平型エンジン66A−66Dと、2つの垂直型エンジン64A−64Bの使用を行う。RAM62は、垂直型エンジン64A−64Bに供給されるサーチ空間ピクセルを含んでもよい。垂直型エンジン64A−64Bは、転置メモリ65A−65Bに接続されており、転置メモリ65A−65Bは、水平型エンジン66A−66Dに対してデータを供給する。水平型エンジン66A−66Dは、1Dシストリックアレイの形態で、構成されることができる。以下により詳細に記述するように、いくつかの例において、水平型および垂直型エンジンは、4×4変換に基づいて設計されてもよい。しかしながら、変換サイズは任意のサイズ(例えば、N×N)であることができ、異なるサイズの変換は、中間計算の再使用に関係する利点を実現しつつ、ハードウェアエンジン設計を変更できる。] 図5 [0053] 上に述べたように、ここで記述した技術は、実行される1D変換の数に関して、最大37.5%の削減を達成できる。しかしながら、図5に示したアーキテクチャは、25パーセントの削減を達成してもよい。水平型エンジンの数が増加するにつれて、より多くの共有が発生されるので、計算削減の量を改善できる。16個の水平型エンジンを維持するのに、5個の垂直型エンジンが必要とされるかもしれない。このケースでは、計算削減の量は、1−[(5+16)/(16+16)]=34.4%になってもよい。一般的に、N個の水平型エンジンに対して、1+Ceil((N−1)/4)の垂直型エンジンが必要とされてもよい。Ceil( )は、正の無限(+∞)に丸める。計算削減に対する一般化された数式は、以下のように与えられる。すなわち: 1−[(垂直型エンジンの数+水平型エンジンの数)/(水平型エンジンの数+水平型エンジンの数)]。] 図5 [0054] 図6は、本開示にしたがって、達成されてもよい計算的な節約を図示するグラフである。特に、図6は、(x軸上の)並列にサーチされているポイントの数に基づいて、(y軸上の)達成されることができる計算的な節約のパーセンテージをグラフ化する。一般的に、サーチポイントの数は、(垂直変換が最初に実行され、次に、水平変換が実行されることを仮定して、)水平型エンジンの数に等しくてもよい。例として、16個の水平エンジンは、16個のサーチポイントをカバーすべきである。したがって、図6のx軸上の値16において、これは、グラフ上の34.4%の節約に対応する。] 図6 [0055] 図7は、並列でサーチされてもよいサーチポイントの数の関数としての変換エンジンの数を図示するグラフである。図7は、(x軸上の)並列にサーチされてもよい異なる数のサーチポイントに対して、(y軸上の)水平型エンジンの数と、(y軸上の)垂直型エンジンの数と、(y軸上の)水平型および垂直型エンジンの結合数とをグラフ化する。] 図7 [0056] 再び、FTEにおいて、複数の水平型エンジンを使用して、変換スループットとデータ共有を改善する。FTEエンジンが、効率的なデータ共有と、比較的小さいエリアにおける低電力消費とを、確実に容易にできるように、FTEの垂直型および水平型エンジンは、異なるふうに設計されている。特に、クロック電力を節約するために、エンジンのデータレジスタの大多数は、ピクセルクロックレートの2分の1、または4分の1においてクロックすることによって設計されてもよい。(以下の)表1、表2、および表3は、使用することができるクロッキングスキームを図示する。] [0057] 図8は、例示的な(垂直型エンジンとも呼ばれる)垂直型変換エンジン80を図示するブロック図である。垂直型エンジン80は、さまざまなレジスタR0(81A)、 R1(81B)、 P0(81C)、 P1(81D)、 P2 (81E) およびRf(81F)と、マルチプレクサ82A、82B、82C、82D、82E、および82Fと、加算器85A、および85Bとを備える。垂直型エンジン80は、(図5の)RAM62から直接ピクセルデータを受け取る。垂直型エンジン80とともに技術が実現されてもよく、ここで、垂直型エンジン80は、入力ピクセルデータを再シーケンス化し、内部データパスを再配置し、ブロードキャストされたピクセル入力データを指定されたレジスタにラッチする。] 図5 図8 [0058] 表1は、サーチポイントs(0,0)と、サーチポイントs(1,0)の一部とに対する、垂直型エンジン80の例示的なデータフローとタイミングを示し、その変換は、クロックサイクル16において開始する。特に、表1は、連続的なクロックサイクルにわたって入力(I/P)が与えられたとして、異なるレジスタの内容を示す。出力(O/P)は、レジスタRf(81F)の内容に対応していてもよい。再び、“分けられた(divided down)”クロック信号を使用してもよく、このケースでは、垂直型エンジン80に対して等しいクロッキングパワーが、クロックサイクル毎に3つのレジスタを取り扱う。] [0059] 一般的に、サーチポイントs(i,j)に対して、RAM62からのピクセルデータは、以下のように再シーケンス化される。] [0060] レジスタR0(81A)は、クロック2nサイクルにおいてイネーブルされて、ピクセルデータをラッチする。] [0061] レジスタR1(81B)は、2クロックサイクル毎に入力ピクセルデータをラッチする。レジスタR0(81A)クロックは、クロック2n+1サイクルにおいてイネーブルされて、ピクセルデータをラッチする。] [0062] 中間変換データを保持するのに使用されるレジスタP0 81C、P1 81D、P2 81Eに対して、P0(81C)クロックはサイクル4n+1においてイネーブルされてラッチし、] [0063] サイクル4n+2における、P1(81D)は、以下のようにラッチし、] [0064] そして、サイクル4n+3における、P2(81E)は、以下のようにラッチし、] [0065] サイクル4n+4における、P2(81E)は、以下のようにラッチする。] [0066] レジスタRf(81F)は、最終変換結果を保持するのに使用され、クロックサイクル毎にイネーブルされる。サーチポイントs(i,j)に対して、垂直に変換された出力シーケンスは以下のようである。] [0067] 表1において、フォース(forth)列中に図示された矩形波は、システムクロックを表す。垂直型エンジン80中のすべてのデータはこのシステムクロックの立ち上がりエッジにおいてレジスタ登録される。] [0068] 水平型エンジンが垂直に変換されたデータを効率的に共有できるように、 それは、4×4の垂直に変換されたデータをシーケンス的な順序で取らなければならず、有効なデータ共有を作用させるいくつかの異なる順序があり、ここで示した例は、これらのうちの1つだけのものである。電力消費を最小化させるために、水平型エンジンが、垂直に変換されたデータを即座に消費することが望ましい。転置レジスタTM65A、65Bは、垂直に変換されたデータを、一時的に記憶し、再シャッフルするように設計されている。図12は、垂直型および水平型エンジンに対する入力および出力シーケンスを表す。図13は、水平型エンジンに対する垂直に変換されたデータを再シーケンス化するのに要求される最小のTMレジスタを表す。] 図12 図13 [0069] (図5のエンジン66A−66Dのような)水平型エンジンにおける効率的な処理のために、メモリに対するアクセスを最小化させることが望ましい。さらに、データが破棄される前に、すべてのアクセスされたデータを処理させることが望ましい。効率的にこれらのゴールを達成するために、2つの異なるタイプの水平型エンジンHE(0)90と、HE(j)100とが使用されてもよい。HE(0)90は、(図5の)水平型エンジン66Aに対応してもよく、HE(j)100は、エンジン66B−66Dのそれぞれに対応してもよい。] 図5 [0070] それぞれの水平型エンジンは、4ストリングのデータを取り、これらはデータシーケンス0、データシーケンス1、データシーケンス2、および、データシーケンス3である。これらのシーケンスは、以下のように示される。] [0071] S’(i,j)は、垂直に変換されたピクセルデータを表す。水平型エンジンHE(0)に対して、すべての4シーケンスデータは、垂直型エンジンVE(0)からの入力である。] [0072] 水平型エンジンHE(j)100に対して、その入力データシーケンス0、およびシーケンス1は、HE(0)90のレジスタ91Bおよび91Cからのものであり、シーケンス2データは、HE(0)90の92Hの共有データ出力からのものであり、HE(1)100のシーケンス3データは、垂直型エンジンVE(1)80からの直接のものである。] [0073] 水平型エンジンHE(2)100と、そのシーケンス0データ入力は、HE(0)90レジスタ91Cからのものであり、シーケンス1データは、HE(0)の共有データ出力92Hからのものであり、シーケンス2データは、HE(1)100の共有データ出力92Hからのものであり、HE(2)のシーケンス3データは、垂直型エンジンVE(1)80からの直接のものである。] [0074] 水平型エンジンHE(j)100、ここでj≧3に対して、その入力データシーケンス0、シーケンス1、およびシーケンス2は、その隣接水平型エンジンHE(j−3)、HE(j−2)、および、HE(j−1)それぞれの共有データ出力マルチプレクサ102Hを使用する。HE(j)のシーケンス3データは、いつも垂直型エンジンVE(k)出力から直接到来する。ここで、k=(j+3)/4の整数である。] [0075] 以下の表2と表3は、水平型エンジンHE(0)90とHE(1)100の入力、出力、および内部制御タイミングを示す。R0(91A)、R1(91B)、R2(91C)、R3(91D)、およびR0(101A)は、4クロックサイクル毎に1回だけイネーブルされ、中間レジスタP0(91E、101B)、P1(91F、101C)は、2クロックサイクル毎にデータをラッチする。] [0076] 図9は、例示的な(水平型エンジンHE(0)としても呼ばれる)水平型変換エンジンHE(0)90を図示する。図10は、例示的な水平型エンジンHE(j)100を図示する。図9の水平型エンジン90は、ラベル付けされた、さまざまなレジスタR0(91A)、R1(91B)、R2(91C)、R3(91D)、P0(91E)、P1(91F)、およびRf(91G)と、マルチプレクサ92A、92B、92C、92D、92E、92F、92G、92Hと、加算器95Aおよび95Bとを含む。図10の水平型エンジン100は、ラベル付けされた、さまざまなレジスタR0(101A)、P0(101B)、P1(101C)、およびRf(101D)と、マルチプレクサ102A、102B、102C、102D、102E、102F、102G、102H、および102Iと、加算器105Aおよび105Bとを含む。図8、9、10に示したレジスタは、それぞれのエンジンの物理的構造を備えていてもよいが、記憶構造は互いに類似していてもよい。言い換えると、図8中のレジスタR0(81A)は、図9中のレジスタR0(91A)とは異なる。] 図10 図8 図9 [0077] 水平型エンジンHE(0)90は、最初の4×4ピクセル列ブロック(N×Mサイズのサーチエリアからのサーチポイントs(0,0),s(1,0)・・・s(M−3,0))を変換するように設計されていてもよい。対照的に、(図10に示された)水平型エンジンHE(j)100を繰り返し使用して、列ブロックの残り(サーチポイントs(0,j),s(1,j)・・・s(M−3,j)(1≦j≦N−3))を変換してもよい。図9の水平型エンジンHE(0)90は、図5のHE(0)66Aに対応していてもよく、図9の水平型エンジンHE(j)100は、図5のHE(1)66B、HE(2)66C、およびHE(3)66Dのそれぞれに対応していてもよい。] 図10 図5 図9 [0078] 水平型エンジンHE(0)90は、(図5の)垂直型エンジンVE(0)から4つの4分の1のピクセルクロックされたデータレジスタR0(91A)、R1(91B)、R2(91C)、R3(91D)へとブロードキャストされたシーケンスのピクセルデータをラッチし、中間変換関数を実行し、次に、結果をレジスタP0(91E)およびP1(91F)に記憶する。レジスタP0(91E)およびP1(91F)は、第2のバタフライ演算に対するデータを記憶し、結果が最終レジスタRf(91G)に配信される。] 図5 [0079] 水平型エンジン90のレジスタR0(91A)、R1(91B)、R2(91C)、およびR3(91D)においてラッチされたデータは、次の3つの水平型エンジンHE(1)、HE(2)、HE(3)によって共有されてもよい(図5の66B−66D参照のこと)。一般的に、水平型エンジンHE(j)100(ここで、j=1,2,または3)のそれぞれに対して、入力データはHE(0)出力、VE(1)出力、および、“前の”HE(j)エンジンをマルチプレクスしたものから到来する。] 図5 [0080] 表2は、水平型エンジンHE(0)−HE(3)の間でのタイミングと、どのようにデータが共有されるかとを示す。特に、表2は、サーチポイントs(0,0)、s(1,0)、s(2,0)・・・等で作用している、水平型エンジンHE(0)66Aのタイミング情報を示す。サイクル0S’00において開始しているピクセルデータは、サーチポイントs(0,0)に関係する4×4ブロックの最初のピクセルである。サイクル16S’10において開始しているデータは、サーチポイントs(1,0)に対する4×4ブロックの最初のピクセルを指す、等。表2は、表2に提示したものに類似したタイミング関係を適用することによって、終了サーチポイントs(M−3,0)まで容易に延長することができる。] [0081] 表3は、サーチポイントs(0,1)の4×4マッチングエリアに対するHE(1)エンジンの16ピクセルタイミングと、サイクル17から開始するサーチポイントs(1,1)のピクセルタイミングの一部とを表示する。表3のデータシーケンス0、シーケンス1、およびシーケンス3は、水平型エンジンHE(0)からのR1、R2、およびR3レジスタ値からのコピーであり、これは、水平型エンジンHE(1)からHE(3)の間で共有されている。表3において、HE(0)とHE(1)との間のタイミング関係とデータフローを図示するために、レジスタ値を列挙した。留意すべきことに、“分けられた”ピクセルクロック周波数を使用することによって、等しいクロッキングパワーがより多くのレジスタを使用することによって達成される。例えば、HE(1)は、設計において、2.25レジスタに等しいクロッキングパワーを有する4つの物理的レジスタを持っていてもよく、HE(0)は、3つのレジスタに等しいクロッキングパワーを有する7つのレジスタを持っていてもよい。] [0082] 表4は、VE(0)、VE(1)、HE(0)、HE(1)、HE(2)、およびHE(3)の間の例示的なタイミング関係を示す。特に表4は、垂直型および水平型エンジンVE(k)およびHE(j)(ここで、k=0,1であり、j=0,1,2,3である)の間での入力タイミング関係と、垂直変換されたデータが、水平型エンジンHE(j)の間で、どのように共有されるかとを図示する。表4は、サーチポイントs(i,j)に対するタイミング情報だけを提供し、ここで、i=0,1,2…4であり、j=0,1,・・・3である。すべての、サーチポイントs(i,j)に対する、類似のタイミングパターンが容易に開発されることができ、ここで、i=0,1,2…M−3であり、j=0,1,・・・N−3である。] [0083] FTE変換アーキテクチャは、エンジンによって決定されるだけでなく、垂直型および水平型エンジンの間のデータフローによっても決定される。アーキテクチャは、ピクセルレートパイプライン化された設計を備えているので、複数のエンジンの中間の何らかの歪んだデータフローは、パイプラインを機能停止させかねない。この問題を避けるために、複数のエンジンの中間で、転置メモリ65Aと65Bをバッファ用に使用して、データのタイミングに対処してもよい。] [0084] 本開示の技術は、パイプライン化された方法で、ビデオデータの1組のブロックに関して、変換が実行されるのを可能にする。特に垂直型エンジンおよび水平型エンジンは、(図5の)FTE60を通してデータがパイプライン化されるように、少なくとも一部の変換に対して同時に動作してもよい。例えば、図5に示したように、垂直型エンジン64Aおよび64Bによって、データを処理して、転置メモリ65Aと65B中に出力を記憶させることができる。第1のビデオブロックに関係するすべての垂直データが処理された際に、垂直型エンジン64Aおよび64Bは、(適切なように中間結果を再使用しながら)第2のビデオブロックに関係する垂直データを処理してもよい。転置メモリ65Aと65Bは、このようなデータが水平型エンジン66A−66Dのうちの1つによって処理されるまで、必要とされる間じゅう、垂直型エンジン64Aおよび64Bの出力を記憶することを可能にする。このような方法で、FTE60を通してデータがパイプライン化される。] 図5 [0085] 一般的に、垂直型エンジン64Aまたは64Bのうちの1つによるデータ発生と、水平型エンジン66A−66Dのうちの1つによる消費の間のタイミング歪みの最大量は、要求される転置メモリ(TM)の最小量を規定する。移行の間に、最も小さいTMを持つために、一般的に以下のようにすることが望ましい: 1.フィーダーエンジン(発生器)と、レセプター(消費する)エンジンとの間のデータタイミング歪みを最小化させること。] [0086] 2.発生されたフィーダーエンジンデータを可能な限り早く消費すること。] [0087] TMを実現する1つの方法は、ランダムアクセスメモリ(RAM)を使用することである。RAMベースの設計の欠点は、以下のようである: 1.RAMのアドレスサイズ(タイミング歪みに等しく、16クロックサイクルよりも少ない)が小さく、RAMの形状が物理的設計において効率的でないかもしれない。留意すべきことに、2つの4×4変換の間の、最大のタイミング歪みは、15クロックサイクルであってもよい。] [0088] 2.各4×4変換の16クロックサイクルの間に、メモリは、同じクロックサイクルの間に複数回、読み出され、また、書き込まれることができる。このことは、2ポートRAMが使用されない限り、RAMがピクセルクロックレートの2倍運転しなければならないことを意味する。] [0089] 3.より小さいRAMベースの設計に対して、メモリテスト論理は、そのエリアアドバンテージをオフセットする。] [0090] これらの要因を仮定して、シリコン上の物理的実現が困難性を経験しないときに、垂直型および水平型エンジンの間での転置メモリとしてのRAMの使用を考慮することができる。] [0091] 別のTM設計アプローチは、レジスタベースの設計である。転置メモリまたは転置レジスタのいずれが使用されるかに関わらず、同じパイプライン化技術が使用されてもよい。図11は、どのように入力ブロックがサーチ空間中で規定されてもよいかを図示する。図12は、垂直型および水平型エンジンの間の入出力データフローを図示する。垂直型エンジン入力データと、水平型エンジン入力データに関連する垂直型エンジン出力データとの再順序付けを容易にするために、図12に示した方法で、インデックスを追跡することは、変換プロセスの効率性を改善する。s00,s30,s10,s20・・・s01,・・・s23シーケンスにおけるピクセル入力を有する垂直型エンジン設計は、最も少ないコンポーネントを使用してもよい。このケースでは、VE変換出力は、S’00,S’20,S’10,S’30・・・S’33フォーマットにしたがう。このことは、入力垂直型エンジンデータの出力垂直型エンジンデータに対する再順序付けを追跡するように、インデックスから配列(array)へと追跡することによって、純粋に論理的方法で行われてもよい。インデックスを追跡することは、メモリを更新することなく、データが1つのロケーションに記憶されることを可能にし、不必要な書き込み動作をなくす。当業者はまた、データをメモリ中に再度書き込みすることによる再順序付けも行われてもよいことを理解するだろう。] 図11 図12 [0092] 入力データを共有するために、水平型エンジン入力が、シーケンス化されたフォーマットであることが望ましい。このケースでは、パイプライン化技術を使用してもよく、これによって、垂直型および水平型エンジンが、ビデオデータのパイプラインに関して並列で作用する。効率的なパイプライン化されたデータ処理のために、水平型エンジンは、垂直型エンジンによって発生された第1のデータが利用可能になるとすぐに、この第1のデータを入力してもよい。したがって、水平入力は、S’00,S’01,S’02,S’03・・・S’33シーケンスフォーマットにおけるものであってもよい。図12の垂直型エンジン出力シーケンス(VER. O/P SEQ.)と、水平型エンジン入力シーケンス(HOR.I/P SEQ.)とを比較すると、最大の対応する差異は、13−4=9であり、これは、このケースにおいて、9つの転置レジスタが必要とされることを示す。当業者は、より大きいブロックサイズが、異なる数の転置レジスタを要求してもよいことを理解するだろう。数は、データが処理のために利用可能になる最早の時間に関連する。転置レジスタの適切な数を選択することによって、過剰のレジスタを回避するように、パイプライン化を効率的な方法でサポートすることができる。このケースでは、可能な限りすばやくデータ処理パイプラインにおいてこのようなデータが使用されることを可能にする十分な時間の間にすべての必要なデータを保存するために、追加の、または超過量のメモリまたはレジスタを必要とすることなく、9つの転置レジスタで十分であってもよい。] 図12 [0093] 図13は、垂直型および水平型エンジンの間で使用されてもよい転置レジスタ(TR)の数を示す。図13の左側の番号は、時間マークである。したがって、この例において、時間T1において、垂直型エンジンはS’00を出力し、T2において、垂直型エンジンは、S’20を出力する・・・等。図13において斜線を引かれたエリアは、出力が水平型(レセプター)エンジンによって消費される前に、どれくらいの間、垂直型エンジン(フィーダー)出力が、TR中に記憶されるかを表す。ここで、水平型エンジンは、垂直型エンジンの出力の消費を時間T10から開始して、時間T25において終了する。図13の右側の数は、それぞれの時間マークにおいて、必要とされるTRの数を表し、これは斜線のエリアの合計量に等しい。図13によって推定された合計TRもまた9である。時間13におけるピクセル番号は、TRへとラッチされることなく、水平型エンジンに直接供給される。] 図13 [0094] いくつかの技術と例を記述してきた。記述した技術を、ハードウェア、ソフトウェア、ファームウェア、または、これらの任意の組み合わせで実現してもよい。ソフトウェアにおいて実現される場合、ここで記述した技術は、デバイス中で実行される際に、上に記述した1つ以上の技術を実行させる命令を備えるコンピュータ読取可能媒体中で実現されてもよい。例えば、命令は、実行される際に、ビデオコーディングデバイスが、ビデオデータのブロック上に変換を実行することをもたらしてもよく、ここで、変換を実行することは、ビデオデータの第1のブロックの第1の変換に関係する計算を、ビデオデータの第2のブロックの第2の変換において再使用することを含む。] [0095] コンピュータ読取可能媒体は、同期ダイナミックランダムアクセスメモリ(SDRAM)のようなランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電子的消去可能プログラム可能読出専用メモリ(EEPROM)、フラッシュメモリ(登録商標)、磁気または光学データ記憶媒体、および類似物を含んでもよい。命令は、1つ以上のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、1つ以上の特定用途向け集積回路(ASIC)、1つ以上のフィールドプログラム可能ゲートアレイ(FPGA)、あるいは、同等な集積または個別の論理回路のような1つ以上のプロセッサにおいて実行されてもよい。いくつかの実施形態では、ここで記述した機能は、オーディオマルチメディア情報をエンコーディングおよびデコーディングするように構成されている、専用ソフトウェアモジュールまたはハードウェアユニット内で提供されてもよく、結合マルチメディアエンコーダデコーダ(CODEC)に組み込まれてもよい。] [0096] ハードウェアで実現される場合、本開示の技術は、ビデオデータのブロックへの変換を実行するように構成された回路に向けられていてもよく、ここで、変換を実行する際に回路は、ビデオデータの第1のブロックの第1の変換に関係する1つ以上の計算を、ビデオデータの第2のブロックの第2の変換において再使用する。例えば、回路は、集積回路、または、チップセットを形成する1組の回路を含んでいてもよい。回路は、ASIC、FPGA、さまざまな論理回路、集積回路、または、これらの組み合わせを含んでもよい。] [0097] 本発明のさまざまな観点を説明した。これらの、および、他の観点は、以下の特許請求の範囲内のものである。]
权利要求:
請求項1 ビデオデータのブロック上で変換を実行するビデオコーダを具備するデバイスにおいて、前記ビデオコーダは、前記変換を実行する際に、ビデオデータの第1のブロックの第1の変換に関係する1つ以上の計算を、ビデオデータの第2のブロックの第2の変換において再使用するデバイス。 請求項2 前記ビデオコーダは、整数変換と離散コサイン変換(DCT)とからなるグループからの変換を実行する、請求項1記載のデバイス。 請求項3 前記ビデオコーダは、動き推定器を備え、前記動き推定器は、前記変換を実行する変換エンジンを含む、請求項1記載のデバイス。 請求項4 前記ビデオデータの第1のブロックと、前記ビデオデータの第2のブロックとは、サーチ空間に関係するビデオデータを含み、前記変換エンジンはまた、エンコードされることになるビデオデータのブロック上で変換を実行する、請求項3記載のデバイス。 請求項5 前記ビデオコーダは、前記サーチ空間内で規定されているビデオデータの4つ以上のブロック上で変換を実行し、前記ビデオコーダは、前記サーチ空間内で規定されている前記ビデオデータのブロックのうちの少なくとも3つの変換において、計算を再使用する、請求項1記載のデバイス。 請求項6 前記ビデオデータのブロックは、4×4ピクセルブロックを含み、前記変換は、中間結果を発生させるための、前記4×4ピクセルブロックの行上での1次元変換と、前記中間結果の列上での1次元変換とを含み、前記再使用される計算は、前記中間結果のうちの少なくともいくつかを含む、請求項1記載のデバイス。 請求項7 前記ビデオコーダは、前記変換を実行する、1つ以上の水平型エンジンと、1つ以上の垂直型エンジンとを備える、請求項6記載のデバイス。 請求項8 前記ビデオコーダは、前記1つ以上の水平型エンジンと、前記1つ以上の垂直型エンジンとの間に、1つ以上の転置メモリをさらに備え、前記1つ以上の転置メモリは、前記エンジンのうちの1つからの出力データをバッファし、前記エンジンのうちの1つに対する入力データに対する、前記エンジンのうちの1つからの出力データのタイミングに対処する、請求項7記載のデバイス。 請求項9 前記変換は、パイプライン化された方法で、ビデオデータの1組のブロックに関して実行され、前記水平型エンジンと、前記垂直型エンジンとは、前記変換の少なくとも一部に対して同時に動作する、請求項8記載のデバイス。 請求項10 前記ビデオコーダは、前記出力データに対する前記入力データに関係するインデックス値を追跡し、前記インデックス値によって、前記出力データに対する前記入力データを再順序付けする、請求項8記載のデバイス。 請求項11 前記ビデオコーダは、前記1つ以上の水平型エンジンと、前記1つ以上の垂直型エンジンとの間に、1組の転置レジスタをさらに備え、前記1組の転置レジスタは、前記エンジンのうちの1つからの出力データをバッファし、前記エンジンのうちの1つに対する入力データに対する、前記エンジンのうちの1つからの出力データのタイミングに対処する、請求項7記載のデバイス。 請求項12 前記変換は、パイプライン化された方法で、ビデオデータの1組のブロックに関して実行され、前記水平型エンジンと、前記垂直型エンジンとは、前記変換の少なくとも一部に対して同時に動作する、請求項11記載のデバイス。 請求項13 前記ビデオコーダは、前記出力データに対する前記入力データに関係するインデックス値を追跡し、前記インデックス値によって、前記出力データに対する前記入力データを再順序付けする、請求項11記載のデバイス。 請求項14 前記デバイスは、ワイヤレス通信デバイスを含む、請求項1記載のデバイス。 請求項15 前記デバイスは、高精細度テレビジョン(HDTV)を含む、請求項1記載のデバイス。 請求項16 前記ビデオデータのブロックは、4×4ピクセルブロックを含み、前記変換は、中間結果を発生させるための、前記4×4ピクセルブロックの列上での1次元変換と、前記中間結果の行上での1次元変換とを含み、前記再使用される計算は、前記中間結果のうちの少なくともいくつかを含む、請求項1記載のデバイス。 請求項17 ビデオデータのブロック上で変換を実行する方法において、前記変換を実行することは、ビデオデータの第1のブロックの第1の変換に関係する1つ以上の計算を、ビデオデータの第2のブロックの第2の変換において再使用することを含む方法。 請求項18 前記ビデオデータのブロックは、4×4ピクセルブロックを含み、前記変換は、中間結果を発生させるための、前記4×4ピクセルブロックの行上での1次元変換と、前記中間結果の列上での1次元変換とを含み、前記再使用される計算は、前記中間結果のうちの少なくともいくつかを含む、請求項17記載の方法。 請求項19 前記ビデオデータのブロックは、4×4ピクセルブロックを含み、前記変換は、中間結果を発生させるための、前記4×4ピクセルブロックの列上での1次元変換と、前記中間結果の行上での1次元変換とを含み、前記再使用される計算は、前記中間結果のうちの少なくともいくつかを含む、請求項17記載の方法。 請求項20 デバイスにおいて、ビデオデータのブロック上で変換を実行する手段と、ビデオデータの第1のブロックの第1の変換に関係する1つ以上の計算を、ビデオデータの第2のブロックの第2の変換において再使用する手段とを具備するデバイス。 請求項21 前記ビデオデータのブロックは、4×4ピクセルブロックを含み、前記変換は、中間結果を発生させるための、前記4×4ピクセルブロックの行上での1次元変換と、前記中間結果の列上での1次元変換とを含み、前記再使用される計算は、前記中間結果のうちの少なくともいくつかを含む、請求項20記載のデバイス。 請求項22 命令を備えるコンピュータ読取可能媒体において、前記命令は、ビデオコーディングデバイス中で実行されるときに、前記デバイスに、ビデオデータのブロック上で変換を実行させ、前記命令は、前記変換を実行させる際に、前記デバイスに、ビデオデータの第1のブロックの第1の変換に関係する1つ以上の計算を、ビデオデータの第2のブロックの第2の変換において再使用させる、コンピュータ読取可能媒体。 請求項23 前記ビデオデータのブロックは、4×4ピクセルブロックを含み、前記変換は、中間結果を発生させるための、前記4×4ピクセルブロックの行上での1次元変換と、前記中間結果の列上での1次元変換とを含み、前記再使用される計算は、前記中間結果のうちの少なくともいくつかを含む、請求項22記載のコンピュータ読取可能媒体。 請求項24 ビデオデータのブロック上で変換を実行するように構成されている回路において、前記変換を実行する際に、前記回路は、ビデオデータの第1のブロックの第1の変換に関係する1つ以上の計算を、ビデオデータの第2のブロックの第2の変換において再使用する回路。 請求項25 前記ビデオデータのブロックは、4×4ピクセルブロックを含み、前記変換は、中間結果を発生させるための、前記4×4ピクセルブロックの行上での1次元変換と、前記中間結果の列上での1次元変換とを含み、前記再使用される計算は、前記中間結果のうちの少なくともいくつかを含む、請求項24記載の回路。
类似技术:
公开号 | 公开日 | 专利标题 WO2018127119A1|2018-07-12|Decoder-side motion vector restoration for video coding CA2934184C|2018-09-25|Low-complexity intra prediction for video coding JP5661836B2|2015-01-28|逆離散コサイン変換の計算中の誤差の低減 US7120197B2|2006-10-10|Motion compensation loop with filtering CN101999229B|2013-04-17|用于视频译码中的运动补偿的高级内插技术 ES2638295T3|2017-10-19|Procedimiento y aparato de codificación de vídeo mejorado Cheung et al.2010|Video coding on multicore graphics processors TW302444B|1997-04-11|Full-search block matching motion estimation processor DE4322343C2|1996-10-02|Mittel zum Erfassen eines Bewegungsvektors und Verfahren zum Bestimmen eines Bewegungsvektors TWI418996B|2013-12-11|執行一按比例縮放後的為類型ii之離散餘弦轉換|之方法及設備、媒體編碼裝置、非暫時電腦可讀媒體、執行一類型ii之全離散餘弦轉換|之方法及設備和執行一為類型iii之離散餘弦轉換|之方法及設備 US6868123B2|2005-03-15|Programmable motion estimation module with vector array unit JP5032313B2|2012-09-26|ビデオ圧縮システムにおける動き推定 Ou et al.2005|An efficient VLSI architecture for H. 264 variable block size motion estimation US8116379B2|2012-02-14|Method and apparatus for parallel processing of in-loop deblocking filter for H.264 video compression standard KR101036731B1|2011-05-24|손실 및 무손실 2차원 데이터 압축을 위한 가역 변환 JP5497164B2|2014-05-21|メディアコード化のための4×4変換 CN109565590A|2019-04-02|用于视频编解码的基于模型的运动向量推导 US20130107966A1|2013-05-02|Techniques to perform fast motion estimation Zhang et al.2003|Performance and complexity joint optimization for H. 264 video coding CN100364338C|2008-01-23|估计图像噪声的方法和设备和消除噪声的方法 JP2015536092A|2015-12-17|標準に準拠した、モデルベースの映像符号化及び映像復号化 JP4920034B2|2012-04-18|マルチスレッドsimd処理を利用したメディア符号化の並列実行 KR101004157B1|2010-12-24|데이터 프레임들의 시퀀스의 효율적인 인코딩/디코딩 US20110293012A1|2011-12-01|Motion estimation of images KR100965704B1|2010-06-24|이미지 및 비디오 코딩을 위한 2d 변환
同族专利:
公开号 | 公开日 WO2009042943A2|2009-04-02| TW200926830A|2009-06-16| CN102067606B|2014-09-17| CN102067606A|2011-05-18| US20090080515A1|2009-03-26| KR20120066681A|2012-06-22| US8654833B2|2014-02-18| KR20100068470A|2010-06-23| KR101235132B1|2013-02-20| JP5512524B2|2014-06-04| WO2009042943A3|2010-12-29| EP2198621A2|2010-06-23|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题 JPH07200539A|1993-12-28|1995-08-04|Matsushita Electric Ind Co Ltd|二次元dct演算装置| JPH09154134A|1995-09-28|1997-06-10|Sony United Kingdom Ltd|ビデオ信号処理方式| JP2000222578A|1999-02-02|2000-08-11|Matsushita Electric Ind Co Ltd|パターンマッチング方法および動きベクトル検出方法| JP2005184829A|2003-12-19|2005-07-07|Stmicroelectronics Inc|ビデオ圧縮用低パワー高性能変換コプロセッサ| WO2005086981A2|2004-03-10|2005-09-22|Sindhara Supermedia, Inc.|Methods and apparatuses for compressing digital image data with motion prediction|JP2011188007A|2010-03-04|2011-09-22|Fujitsu Ltd|画像処理装置、画像処理方法、および画像処理プログラム|JPH021204B2|1984-02-24|1990-01-10|Nitto Denko Corp|| IT8921420V0|1989-07-13|1989-07-13|Telettra Spa|Sistema e circuito per il calcolo di trasformata discreta bidimensionale.| US5894430A|1996-05-20|1999-04-13|Matsushita Electric Industrial Co., Ltd.|Orthogonal transform processor| US6414992B1|1999-01-27|2002-07-02|Sun Microsystems, Inc.|Optimal encoding of motion compensated video| US20040028127A1|2002-08-06|2004-02-12|Raghavan Subramaniyan|Method and apparatus for reducing computational complexity in video encoders| WO2005076613A1|2004-01-30|2005-08-18|Matsushita Electric Industrial Co., Ltd|Picture coding and decoding method, apparatus, and program thereof| CN100433837C|2004-03-18|2008-11-12|华中科技大学|视频编码的整数变换方法| US8595281B2|2006-01-11|2013-11-26|Qualcomm Incorporated|Transforms with common factors| US8849884B2|2006-03-29|2014-09-30|Qualcom Incorporate|Transform design with scaled and non-scaled interfaces| CN100450184C|2006-07-12|2009-01-07|浙江大学|运用于图像编码和视频编码的离散余弦变换方法| US20080107176A1|2006-11-02|2008-05-08|General Instrument Corporation|Method and Apparatus for Detecting All Zero Coefficients|KR100846870B1|2006-07-06|2008-07-16|광운대학교 산학협력단|다수의 기본 블록들의 다차원 구성을 통한 다단계 변환장치 및 그 방법| US20080204598A1|2006-12-11|2008-08-28|Lance Maurer|Real-time film effects processing for digital video| KR101403338B1|2007-03-23|2014-06-09|삼성전자주식회사|영상의 부호화, 복호화 방법 및 장치| US20100026897A1|2008-07-30|2010-02-04|Cinnafilm, Inc.|Method, Apparatus, and Computer Software for Modifying Moving Images Via Motion Compensation Vectors, Degrain/Denoise, and Superresolution| US9110849B2|2009-04-15|2015-08-18|Qualcomm Incorporated|Computing even-sized discrete cosine transforms| US8762441B2|2009-06-05|2014-06-24|Qualcomm Incorporated|4X4 transform for media coding| US9069713B2|2009-06-05|2015-06-30|Qualcomm Incorporated|4X4 transform for media coding| US9081733B2|2009-06-24|2015-07-14|Qualcomm Incorporated|16-point transform for media data coding| US9118898B2|2009-06-24|2015-08-25|Qualcomm Incorporated|8-point transform for media data coding| US8451904B2|2009-06-24|2013-05-28|Qualcomm Incorporated|8-point transform for media data coding| US9075757B2|2009-06-24|2015-07-07|Qualcomm Incorporated|16-point transform for media data coding| US9824066B2|2011-01-10|2017-11-21|Qualcomm Incorporated|32-point transform for media data coding| GB2551087B|2011-10-17|2018-09-19|Kt Corp|Method and apparatus for encoding/decoding image| US9554152B2|2013-07-12|2017-01-24|Qualcomm Incorporated|Concurrent processing of horizontal and vertical transforms| WO2015095265A1|2013-12-19|2015-06-25|Merck Sharp & Dohme Corp.|Hiv protease inhibitors| US10356440B2|2014-10-01|2019-07-16|Qualcomm Incorporated|Scalable transform hardware architecture with improved transpose buffer| CN104811696B|2015-04-17|2018-01-02|北京奇艺世纪科技有限公司|一种视频数据的编码方法和装置| US10567800B2|2016-11-29|2020-02-18|Qualcomm Incorporated|Transform hardware architecture for video coding|
法律状态:
2012-04-24| A977| Report on retrieval|Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120424 | 2012-05-09| A131| Notification of reasons for refusal|Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120508 | 2012-07-21| A601| Written request for extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20120720 | 2012-07-30| A602| Written permission of extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20120727 | 2012-10-06| A601| Written request for extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20121005 | 2012-10-16| A602| Written permission of extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20121015 | 2012-11-09| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121108 | 2013-04-03| A02| Decision of refusal|Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20130402 | 2013-08-03| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130802 | 2013-08-13| A911| Transfer to examiner for re-examination before appeal (zenchi)|Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20130812 | 2014-02-17| TRDD| Decision of grant or rejection written| 2014-02-26| A01| Written decision to grant a patent or to grant a registration (utility model)|Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20140225 | 2014-04-03| A61| First payment of annual fees (during grant procedure)|Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140326 | 2014-04-04| R150| Certificate of patent or registration of utility model|Ref document number: 5512524 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 | 2017-04-11| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 | 2018-04-10| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 | 2019-04-09| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 | 2020-03-31| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 | 2021-03-31| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
优先权:
[返回顶部]
申请号 | 申请日 | 专利标题 相关专利
Sulfonates, polymers, resist compositions and patterning process
Washing machine
Washing machine
Device for fixture finishing and tension adjusting of membrane
Structure for Equipping Band in a Plane Cathode Ray Tube
Process for preparation of 7 alpha-carboxyl 9, 11-epoxy steroids and intermediates useful therein an
国家/地区
|